//
//  GpsManager.h
//  cwz_Business
//
//  Created by ZhangBinbin on 16/1/13.
//  Copyright © 2016年 DAZE. All rights reserved.
//
/*
 
 WGS-82 地球坐标
 GCJ-02 火星坐标（iOS mapView 高德 ， 国内google ,搜搜、阿里云 都是火星坐标）
 百度坐标 (百度地图数据主要都是四维图新提供的)
 
 火星坐标: MKMapView
 地球坐标: CLLocationManager
 
 若想直接给MKMapView使用地球坐标 设置以下代码
 [MapView setShowsUserLocation:YES];
 
 其余地图坐标系说明
 
 百度地图　　　　　　百度坐标
 高德地图　　　　　　火星坐标  MapABC
 腾讯搜搜地图　　　　火星坐标
 阿里云地图　　　　　火星坐标
 */

#import <Foundation/Foundation.h>
#import <CoreLocation/CoreLocation.h>

#define LocLat           @"Lat_GpsManager"
#define LocLng           @"Lng_GpsManager"
#define LocProvinceName  @"LocProvinceName_GpsManager"
#define LocCityName      @"CityName_GpsManager"
#define LocDetailAdd     @"DetailAdd_GpsManager"

typedef enum {
    //默认坐标系         (WGS)
    kNormal   = 0,
    //百度地图用的坐标系  (Baidu)
    kBaiDuMap = 1,
    //高德地图用的坐标系  (GCJ)
    kABCMap   = 2,
    //腾讯搜搜用的坐标系  (GCJ)
    kSoSoMap  = 3,
    //阿里云地图用的坐标系 (GCJ)
    kALiMap   = 4
    
} kMapType;

typedef enum {
    //上一次定位的经纬度
    kLocationPrevious,
    //本次定位的经纬度
    kLocationCurrent
} kLocationType;

typedef void (^GpsCallback) (double lat, double lng, NSString * provinceName, NSString * cityName, NSString * detailAdd, kLocationType type);
typedef void (^GpsFailCallBack) (void);
@interface GpsManager : NSObject <CLLocationManagerDelegate> {
    CLLocationManager * manager;
    //定位成功后的回调Block
    GpsCallback         gpsCallBack;
    //若是只定位一次的标示位
    BOOL                getOnce;
    //获取定位坐标的地图类型
    kMapType            locationType;
}

//获取单例对象
+ (id)   sharedGpsManager;

//连续定位 type默认为kNormal
+ (void) getGps    :(GpsCallback)cb type:(kMapType)type;

//单次定位 type默认为kNormal
+ (void) getOnceGps:(GpsCallback)cb type:(kMapType)type;

//停止定位
+ (void) stop;

//判断是否在中国
+(BOOL)isLocationOutOfChina:(CLLocationCoordinate2D)location;

//将WGS-84转为GCJ-02(火星坐标):
+(CLLocationCoordinate2D)transformFromWGSToGCJ:(CLLocationCoordinate2D)wgsLoc;

//将GCJ-02(火星坐标)转为百度坐标:
+(CLLocationCoordinate2D)transformFromGCJToBaidu:(CLLocationCoordinate2D)p;

//将百度坐标转为GCJ-02(火星坐标):
+(CLLocationCoordinate2D)transformFromBaiduToGCJ:(CLLocationCoordinate2D)p;

//将GCJ-02(火星坐标)转为WGS-84:
+(CLLocationCoordinate2D)transformFromGCJToWGS:(CLLocationCoordinate2D)p;

@end